﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PetSoft.GestionRecursos;
using Business_Entity;
using Business_Logic;

namespace PetSoft.GUI.GestRecursos
{
    public partial class GUIModificarProducto : Form
    {
    	BEProducto prod;
    	public int modProd;
    	private int constructor;
    	
        public GUIModificarProducto(BEProducto prod, int tipoConst)
        {
        	this.prod = prod;
        	this.modProd = 0;
            InitializeComponent();
            this.Load += new EventHandler(Modificar_Load);
            this.constructor = tipoConst;
            this.prodCodValLBL.Text = prod.Codigo.ToString();
            this.prodNomTXT.Text = prod.Nombre;
            this.prodDescTXT.Text = prod.Descripcion;
            this.prodMarcTXT.Text = prod.Marca;
            this.precTXT.Text = prod.PrecioVenta.ToString();
            this.otNomTXT.Text = prod.TipoProducto.NombreExtra;
           // this.prodUniCB.SelectedIndex = prod.Unidad.Codigo;
            if(this.otNomTXT.Text!=""){
            	this.prodTipoCB.SelectedText = "OTROS";
            }
            if(this.constructor==2){//Ver productos
            	this.prodDescTXT.Enabled = false;
            	this.prodNomTXT.Enabled = false;
            	this.prodTipoCB.Enabled = false;
            	this.prodUniCB.Enabled = false;
            	this.prodMarcTXT.Enabled = false;
            	this.otNomTXT.Enabled = false;
            	this.precTXT.Enabled = false;
            	this.modGuardsBTN.Text = "Editar";
            }
            //else{
            	this.prodNomTXT.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasNumerosTB);;
	            this.prodDescTXT.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasNumerosTB);;
	            this.prodMarcTXT.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasNumerosTB);;
	            this.precTXT.KeyPress += new KeyPressEventHandler(Utils.DecimalesPuntoTB);
	            this.otNomTXT.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasNumerosTB);;
            	this.prodDescLBL.Text = "Descripción*";
            	this.prodNomLBL.Text = "Nombre*";
            	this.prodTipoLBL.Text = "Tipo*";
            	this.prodUniLBL.Text = "Unidad*";
            	this.precLBL.Text = "Precio*";
            	this.camLBL.Visible = true;
            	//this.precTXT.Enabled = true;
            //}
        }
        
        private void Modificar_Load(object sender, EventArgs e){        	
        	BLTipoProducto tipo = new BLTipoProducto();
        	this.prodTipoCB.DataSource = tipo.getAllTipoProd();
        	this.prodTipoCB.ValueMember = "codigo";
        	this.prodTipoCB.DisplayMember = "descripcion";
        	if(prod.TipoProducto.NombreExtra=="")
            	this.prodTipoCB.SelectedIndex = prod.TipoProducto.Codigo;
        	else
        		this.prodTipoCB.Text = "OTROS";
            
            BLUnidadProducto unidad = new BLUnidadProducto();
            this.prodUniCB.DataSource = unidad.getAllUnidadProd();
            this.prodUniCB.ValueMember = "codigo";
            this.prodUniCB.DisplayMember = "descripcion";
            this.prodUniCB.SelectedIndex = prod.Unidad.Codigo;
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
        	if(prodTipoCB.Text=="OTROS"){
        		this.otLBL.Text = "Otro Tipo*";
        		this.otNomTXT.Enabled = true;        	
        	}
        	else{
        		this.otLBL.Text = "Otro Tipo:";
        		this.otNomTXT.Text = "";
        		this.otNomTXT.Enabled = false;
        	}
        }

        private void GUIModificarProducto_Load(object sender, EventArgs e)
        {

        }

        private void modCancelarBTN_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void modGuardsBTN_Click(object sender, EventArgs e)
        {
        	String nom, nomOTIpo, desc, marca, msgError= "Debe completar los siguientes campos obligatorios:";
        	String nomTipoCB;
        	int cod, res, codTipo, uni, aux = 0;
        	float precio=0;
        	if(this.modGuardsBTN.Text=="Editar"){
        		this.prodDescLBL.Text = "Descripción*";
        		this.prodDescTXT.Enabled = true;
        		this.prodNomLBL.Text = "Nombre*";
        		this.prodNomTXT.Enabled = true;
        		this.prodTipoLBL.Text = "Tipo*";
        		this.prodTipoCB.Enabled = true;
        		this.prodUniLBL.Text = "Unidad*";
        		this.prodUniCB.Enabled = true;
        		this.prodMarcTXT.Enabled = true;
        		this.precLBL.Text = "Precio*";
        		this.precTXT.Enabled = true;
        		this.modGuardsBTN.Text = "Guardar";
        		this.camLBL.Visible = true;
        	}
        	else{
        		nomOTIpo = this.otNomTXT.Text;
        		nomTipoCB = this.prodTipoCB.Text;
	        	nom = this.prodNomTXT.Text;
		        desc = this.prodDescTXT.Text;
		        marca = this.prodMarcTXT.Text;
		        codTipo = (int) this.prodTipoCB.SelectedValue;
		        uni = (int) this.prodUniCB.SelectedValue;
		        if(nom==""){
		        	msgError = msgError + Environment.NewLine + "            -Nombre";
		        	aux++;
		        }
		        if(desc==""){
		        	msgError = msgError + Environment.NewLine + "            -Descripcion";
		        	aux++;
		        }
		        if(codTipo==-1){
		        	msgError = msgError + Environment.NewLine + "            -Tipo Producto";
		        	aux++;
		        }
		        if(uni==-1){
		        	msgError = msgError + Environment.NewLine + "            -Unidad de Producto";
		        }
		        if((this.otNomTXT.Enabled==true)&&(nomOTIpo=="")){
		        	msgError = msgError + Environment.NewLine + "            -Nombre del Otro Tipo";
		        	aux++;
		        }
		        try{
		        	precio = Single.Parse(this.precTXT.Text);
		        }
		        catch{
		        	msgError = msgError + Environment.NewLine + "            -Precio";
		        	aux++;
		        }
		        if(aux!=0)
	        		MessageBox.Show(msgError);
	        
		        if((nom!="")&&(desc!="")&&(uni!=-1)&&((codTipo!=-1)||((codTipo==5)&&(nomOTIpo!="")))&&(precio!=0)){
		        	cod = Int32.Parse(this.prodCodValLBL.Text);
		        	BLProducto bProd = new BLProducto();
		        	res = bProd.modificarProd(cod, nom, desc, uni, codTipo, marca, nomOTIpo, precio, nomTipoCB);
		        	if(res==0){
		        		MessageBox.Show("Hubo un error al intentar modificar la información del producto.");
		        	}
		        	else{
		        		if(res==2){
		        			MessageBox.Show("El producto fue eliminado anteriormente.");
		        		}
		        		else{
			        		MessageBox.Show("La información del producto fue modificada correctamente.");
			        		this.modProd = 1;
		        		}
		        		
		        		//MessageBox.Show("Datos guardados correctamente.");
		        	}
		        	this.Close();
		        }
        	}
        }
    }
}